package ahp.client.layouts;

import java.util.ArrayList;

import ahp.client.Kategoria;
import ahp.client.Osoba;

import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Label;

public class KandydatkiPorownania extends Composite {

	ArrayList<Osoba> kandydatki;
	ArrayList<Kategoria> kategorie;
	public final FlowPanel porownanie_content = new FlowPanel();
	public final FlowPanel top = new FlowPanel();
	public final FlowPanel bottom = new FlowPanel();
	public final FlowPanel bottom_por = new FlowPanel();
	Button next =new Button("Dalej");
	
	public final Button pokazMacierz = new Button("Pokaz macierz");
	
	public int index_os;
	public int index_os2;
	int current;
	int max;
	Label count;
	boolean first=true;
	int index=0;
	public boolean flaga=false;
	boolean pokaz_przycisk=false;
	
	public PojedynczePorownanie p;
	public KandydatkiPorownania(ArrayList<Osoba> _kandydatki,ArrayList<Kategoria> _kategorie){
		
		
		initWidget(porownanie_content);

		
		kandydatki=_kandydatki;
		kategorie=_kategorie;
		
		int size=kandydatki.size();
		//max ilosc porownan
		max=(size*(size-1))/2;
		//porownanie aktualne, do pokazania na samej górze ile pozostało porównań
		current=1;		
		
		count=new Label("Porównanie: " + current + "/"+max);
		
		top.addStyleName("top");
		bottom.addStyleName("bottom");
		pokazMacierz.addStyleName("button2");
		
		pokazMacierz.addClickHandler(new ClickHandler() {
			
			@Override
			public void onClick(ClickEvent event) {
				// TODO Auto-generated method stub
				MacierzeWindow window=new MacierzeWindow(kategorie);
				porownanie_content.add(window);
			}
		});
		
		
		porownanie_content.add(top);
		porownanie_content.add(bottom);
		
		porownanie_content.addStyleName("porownania");
		
	

		bottom.add(bottom_por);
		bottom.add(next);
	
		top.add(count);
		count.addStyleName("label");
		
		index_os=0;
		index_os2=1;
		p=new PojedynczePorownanie(kandydatki.get(index_os), kandydatki.get(index_os2), kategorie);
		bottom_por.add(p);
		
		next.addClickHandler(new ClickHandler() {

			@Override
			public void onClick(ClickEvent event) {
				// TODO Auto-generated method stub

				System.out.println("***************");
				
				current++;
				if(current<max){
					count.setText("Porównanie: " + current + "/"+max);
				}
				else{
					count.setText("Porównanie: " + max + "/"+max);
					flaga=true;
				}		
				if(current==max){
					next.setText("Akceptuj");
					System.out.println(index);
					
					
					
//					System.out.println(" \n Macierz unormowana:");
//					for (int i = 0; i < kategorie.get(0).macierz.length; i++) {
//						for (int j = 0; j <  kategorie.get(0).macierz.length; j++) {
//							System.out.print( kategorie.get(0).macierz[i][j] + "\t");
//						}
//						System.out.println("");
//					}
//					System.out.println("--------------------");
//					System.out.println(" \n Macierz unormowana:");
//					for (int i = 0; i < kategorie.get(1).macierz.length; i++) {
//						for (int j = 0; j <  kategorie.get(1).macierz.length; j++) {
//							System.out.print( kategorie.get(1).macierz[i][j] + "\t");
//						}
//						System.out.println("");
//					}
				}
				if(current>max){
					bottom.add(pokazMacierz);
				}
				
				p.updateMacierz(index_os,index_os2);
//				System.out.println("update: + " +index_os + " " + index_os2);
				
				if(index_os>=kandydatki.size()-2){
					return;
				}
				index_os2++;
				if(index_os2>=kandydatki.size()){
					index_os++;
					index_os2=index_os+1;
					System.out.println("pokaz: + " +index_os + " " + index_os2);
					update(kandydatki.get(index_os),kandydatki.get(index_os2));
					return;
				}
				System.out.println("pokaz: + " +index_os + " " + index_os2);
				update(kandydatki.get(index_os),kandydatki.get(index_os2));
				
/*				
				if(index_os>=kandydatki.size()-1){
					System.out.println("pierwszy if");
					next.addStyleName("disabled");
					index_os--;
					index_os2--;
					p.updateMacierz(index_os,index_os2);
					next.setText("Akceptuj");
					return;
				}
				
				
				
				if(index_os2+1>=kandydatki.size()){
					System.out.println("drugi if");
					p.updateMacierz(index_os,index_os2);
					index_os++;
					index_os2=index_os+1;
					current++;
					
					update(kandydatki.get(index_os),kandydatki.get(index_os2));
					count.setText("Porównanie: " + current + "/"+max);					
					return;
				}
				
				p.updateMacierz(index_os,index_os2);
				
				index_os2++;
				current++;
				
				update(kandydatki.get(index_os),kandydatki.get(index_os2));
				if(current<max){
					count.setText("Porównanie: " + current + "/"+max);
				}
				else{
					count.setText("Porównanie: " + max + "/"+max);
				}
				
*/
				
				

			}
			

		});

		

		
		
		
	}
	
	void update(Osoba os1,Osoba os2){
		
//		p.updateMacierz(index_os,index_os2);
		
		p=new PojedynczePorownanie(os1, os2, kategorie);
		bottom_por.clear();
		bottom_por.add(p);
		
	}
	
}
